// 
// Bachelor of Software Engineering
// Media Design School
// Auckland
// New Zealand
//
// (c) 2005 - 2014 Media Design School
//
// File Name	: SpaceInvadersStd.h
// Desrciption	: SpaceInvadersStd declaration file.
// Author		: Hayden Asplet.
// Mail			: hayden.asplet@mediadesignschool.com
//

//---------------------------------------------------------
// SpaceInvadersStd.h:
//
// This file is a precompiled header and includes the
// GameStd.h precompiled header which has many frequently
// used standard includes.
//
// This file also defines many SpaceInvaders specific 
// constants and typedefs.
//---------------------------------------------------------

#pragma once

#ifndef __SPACEINVADERSSTD_H__
#define __SPACEINVADERSSTD_H__

// Library Includes

// Local Includes
#include "../GameFramework/GameStd.h"	// The intry point to the game framework

// Useful Constants
extern const int g_kiSPACEINVADERS_SCREEN_WIDTH;
extern const int g_kiSPACEINVADERS_SCREEN_HEIGHT;

//===========================================================
// Space Invaders Logic Constants
//===========================================================

extern const int g_kiMYSTERY_SHIP_MIN_TIME;		// The minumum time between mystery ship appearances.
extern const int g_kiMYSTERY_SHIP_MAX_TIME;		// The maximum time between mystery ship appearances.

extern const float g_kfMYSTERY_SHIP_SPEED;

extern const float g_kfCANNON_MAX_VELOCITY;
extern const float g_kfCANNON_ACCELERATION;

extern const int g_kiSTANDARD_ANIM_SPEED;

//===========================================================
// Space Invaders UI constants
//===========================================================

extern const int g_kiSTANDARD_TEXT_HEIGHT;
extern const int g_kiSTANDARD_UI_OFFSET;

//===========================================================
// Alien Wave Constants
//===========================================================

extern const int g_kiALIEN_WAVE_COLUMNS;
extern const int g_kiALIEN_WAVE_ROWS;

extern const int g_kiALIEN_WAVE_START_X;
extern const int g_kiALIEN_WAVE_START_Y;

extern const int g_kiALIEN_WAVE_OFFSET;				// The amount to offset each alien by.
extern const int g_kiALIEN_WAVE_INCREMENT_X;		// The amount to move the alien wave, each time it moves.
extern const int g_kiALIEN_WAVE_INCREMENT_Y;		// The amount to move the alien wave downwards once it reaches the end of the screen.
extern const float g_kfALIEN_WAVE_START_RATE;		// The amount of time surpassed until the alien wave will move. 
extern const float g_kfALIEN_WAVE_RATE_INCREASE;	// The rate at which the rate of the aliens movement increases.
extern const float g_kfALIEN_WAVE_FIRE_MIN_TIME;	// The minimum time between bullet fires.
extern const float g_kfALIEN_WAVE_FIRE_MAX_TIME;	// The maximum time between bullet fires.

// Useful Typedefs

#endif